package com.better.common.jwtauth.TokenManager;

import com.better.common.jwtauth.secruity.JWTUserDetails;

/**
 * Created by Administrator on 2017/12/7.
 */
public interface TokenManager {
    /**
     * 创建一个token关联上指定用户
     *
     * @param userInfo 指定用户的id
     * @return 生成的token
     */
    String generateAccessToken(JWTUserDetails userInfo);

    /**
     * 校验token是否有效 true 有效 false 无效
     *
     * @author:
     * @date :2017/12/13
     */
    boolean checkToken(String token);

    /**
     * 刷新token（延期操作）
     *
     * @param key   token(登录后未过期)
     * @param redisTokenInfo realToken（对应的真实token值，验证都基于此token）
     * @author:
     * @date :2017/12/13
     */
    void refreshToken(String key, RedisTokenInfo redisTokenInfo);

    /**
     * 重新生成token
     * @author:
     * @date :2017/12/13
     */
    String generateRefreshToken(JWTUserDetails userDetails);

    /**
     * 清除token（登出操作）
     *
     * @param token 登录用户的token
     */
    void deleteToken(String token);

    /**
     * 从redis 中获取真实token值
     *
     * @param token 加密后的字符串
     * @return
     */
    RedisTokenInfo getRealToken(String token);
}
